package it.orma.iridehr.service.ricercaOpportunita;

import java.util.List;

import it.orma.iridehr.controllers.form.ricercaOpportunita.RicercaOpportunitaForm;
import it.orma.iridehr.entities.Opportunita;
import it.orma.iridehr.entities.azienda.Azienda;
import it.orma.iridehr.entities.azienda.ContattoAzienda;
import it.orma.iridehr.repository.ricercaAziende.RicercaAziendeRepository;
import it.orma.iridehr.repository.ricercaOpportunita.RicercaOpportunitaRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;


public class RicercaOpportunitaService {

	@Autowired
	private RicercaOpportunitaRepository ricercaOpportunitaRepository;
	
	@Autowired
	private RicercaAziendeRepository ricercaAziendeRepository;
	
	@Transactional
	public Opportunita caricaOpportunita(Long idOpportunita,Integer idAzienda){
		if (idOpportunita.intValue()==-1){
			Opportunita opp =  ricercaOpportunitaRepository.creaOpportunita();
			if(idAzienda.intValue()>-1){
				Azienda az = ricercaAziendeRepository.ricercaAziendaById(idAzienda);
				opp.setAzienda(az);
			}else{
				opp.setAziendaNotDefined(true);
			}
			return opp;
		}	
		return ricercaOpportunitaRepository.caricaOpportunita(idOpportunita);
	}

	public List<ContattoAzienda> caricaCandidati(Opportunita opp){
		List<ContattoAzienda> ca = null;
		ca = ricercaOpportunitaRepository.caricaCandidati(opp.getIdOpportunita());		
		return ca;  
	}
	
	public void countOpportunita(RicercaOpportunitaForm oppForm){
		oppForm.setOpportunitaTot(ricercaOpportunitaRepository.countOpportunita(oppForm));
	}
	
	
	public void refreshOpportunita(RicercaOpportunitaForm oppForm){
		oppForm.setSearched(true);
		oppForm.setOpportunita(ricercaOpportunitaRepository.caricaOpportunita(oppForm.getPagina(),oppForm));	
	}
	
    public String getBannerHtml(int maxIndiciShow, int indicePag,int recordTotali,RicercaOpportunitaForm ricercaOppForm, int recordXpagina){
    	
    	String html="";
    	if(indicePag < 1)
    		indicePag = 1;
    	//si pagina solo se i dati superano la dimensione di una pagina
    	if(recordTotali > recordXpagina){		
    		//Costruzione menu di paginazione
    		int mostratiDa = (indicePag-1)*recordXpagina+1;
    		html="<table width='100%'><tr><td><span class='pagebanner'>"+recordTotali+" records trovati, mostrati da "+
    			mostratiDa+" a "+(mostratiDa+ricercaOppForm.getOpportunita().size()-1);
    		html+=".</span><span class='pagelinks'>";
    		int pagineRapp=recordTotali/recordXpagina;
    		if(recordTotali%recordXpagina>0)
    			pagineRapp++;
    		if(indicePag==1)
    				html+="[Primo/Prec.] ";
    		else{
    			html+="[<a href=\"javascript:cambiaPagDati(1)\">Primo</a>";
    			html+="/<a href=\"javascript:cambiaPagDati("+(indicePag-1)+ ")\">Prec.</a>]";
    		}
    		int start = 1;
    		int end = pagineRapp;     		
    		if(pagineRapp>maxIndiciShow){
	    		if(indicePag - maxIndiciShow/2 < 1 )
	    			end = maxIndiciShow;
	    		else if(indicePag + maxIndiciShow/2 > pagineRapp)
	    			start = pagineRapp - maxIndiciShow;
	    		else{
	    			start = indicePag - maxIndiciShow/2;
	    			end = indicePag + maxIndiciShow/2;	
	    		}    			
    		} 
    		if(start>1)
    			html+="...";
    		for(int i=start;i<end+1;i++){
    			if(i == indicePag)
    				html+="<b> "+i+"</b>,";
    			else{
    				html+=" <a href=\"javascript:cambiaPagDati("+i+")\" title='Vai a pagina "+i+"'>"+i+"</a>,";
    			}
    		}
    		html=html.substring(0,html.length()-1);
    		if(indicePag==pagineRapp)
    				html+=" [Succ./Ultimo] ";
    		else{
    			if (end<pagineRapp){
    				html+=" ...";
        		}
    			html+=" [<a href=\"javascript:cambiaPagDati("+(indicePag+1)+")\">Succ.</a>";
    			html+="/<a href=\"javascript:cambiaPagDati("+pagineRapp+")\">Ultimo</a>]";
    		}	
    		html+="</span></td></tr></table>";
    	}
    	
    	return html;
    }

}